import { ref, onMounted } from 'vue'
// import { ref, computed } from 'vue'
export default function (fetchFn, resFn) {
  const list = ref([])
  const pageNum = ref(1)
  const pageSize = ref(10)
  const total = ref(0)
  const pageLoading = ref(false)
  // const hasNextPage = computed(() => {
  //   if (total.value === null) return true
  //   return pageNum.value <= total.value
  // })
  // const noData = computed(() => {
  //   return total.value === 0
  // })

  // async function fetchListScroll(refresh = false) {
  //   if (refresh) {
  //     pageNum.value = 1
  //     list.value = []
  //     total.value = null
  //   }
  //   try {
  //     if (!hasNextPage.value) return
  //     pageLoading.value = true
  //     const res = await fetchFn({
  //       pageNum: pageNum.value,
  //       pageSize: pageSize.value
  //     })
  //     if (res.code === 200) {
  //       const resData = resFn ? resFn(res.data) : res.data

  //       list.value = [...list.value, ...resData.list]
  //       total.value = resData.total
  //       // pageNum.value = resData.pageNum
  //       // pageSize.value = resData.pageSize
  //       // hasNextPage.value = res.hasNextPage
  //       if (hasNextPage.value) {
  //         pageNum.value += 1
  //       }
  //     } else {
  //       // uni.showToast({
  //       //   icon: 'none',
  //       //   title: res.msg
  //       // })
  //     }
  //   } catch (error) {
  //     console.log(error)
  //   }
  //   pageLoading.value = false
  //   // console.log({
  //   //   list,
  //   //   total,
  //   //   pageNum,
  //   //   pageSize,
  //   //   hasNextPage,
  //   //   pageLoading
  //   // })
  // }

  async function fetchListTable(refresh = false) {
    if (refresh) {
      pageNum.value = 1
      list.value = []
      total.value = 0
    }
    try {
      pageLoading.value = true
      const res = await fetchFn({
        pageNum: pageNum.value,
        pageSize: pageSize.value
      })
      if (res.code === 200) {
        const resData = resFn ? resFn(res.data) : res.data

        list.value = resData.list
        total.value = resData.total
      } else {
        // uni.showToast({
        //   icon: 'none',
        //   title: res.msg
        // })
      }
    } catch (error) {
      console.log(error)
    }
    pageLoading.value = false
  }

  onMounted(() => {
    // console.log('onMounted')
    fetchListTable(true)
  })

  return {
    list,
    pageNum,
    pageSize,
    total,
    // hasNextPage,
    pageLoading,
    // noData,
    //
    // fetchListScroll,
    fetchListTable
  }
}
